lucasw / o3de_ros_example

Simple example of using O3DE with ROS
BSD 3-Clause "New" or "Revised" License
1 stars 0 forks source link

4 wheeled robot example with twist or direct steering & wheel motor joint command input #1

Closed lucasw closed 5 months ago

lucasw commented 5 months ago

Build out of primitives, a box for the chassis and cylinders for wheels.

Skid steer first then do ackermann.

Not sure how to wire up the controller, look at an example robot.

https://github.com/RobotecAI/roscon2023demo

lucasw commented 5 months ago
cd ROSCon2023Demo
$O3DE/scripts/o3de.sh register -pp `pwd`/Project
cd Project
$O3DE/scripts/o3de.sh edit-project-properties -pp `pwd` --user --engine-path $O3DE
source  ~/ros/ros2_rolling/install/setup.bash
cd ../ros2_ws
git submodule init
git submodule update
colcon build
source install/setup.bash
cd ../Project
cmake -B build/linux -S . -G "Ninja Multi-Config"
cmake --build build/linux --target ROSCon2023Demo.GameLauncher Editor --config profile -j 4

Need moveit_ros_planning_interface, which probably means all of moveit is needed

lucasw commented 5 months ago

RosRobotSample

Instantiate this into a new level https://github.com/o3de/o3de-extras/tree/development/Gems/RosRobotSample

cd o3de-extras/Gems/RosRobotSample
$O3DE/scripts/o3de.sh enable-gem -gp `pwd` -pp <PATH>/o3de_ros_example/Projects/o3de_ros_project/

The build the Editor and GameLauncher again

o3de_ros_project$ cmake --build build/linux --target o3de_ros_project.HeadlessServerLauncher Editor --config profile -j 3

The body_link has an Input component set to rosrobot_inputs

Motor Configuration | Use Motor is turned on for each wheel.

Turn off Angular Limit

There's a ROS2 Frame Game Component (outdated) in the rosbot body and each wheel - is that necessary? It looks to be instead of ROS2 Frame.

The Wheel Controller | Steering entry is empty.

Publishing to /cmd_vel does move it though.

Tried to copy all of the above (except the outdated ros2 frame) and it worked briefly, but now can't duplicate.

lucasw commented 5 months ago

Wheel - use wheel_material in PhysX Primitive Collider

lucasw commented 5 months ago

The camera frame rate looks good when measured by ros2 topic hz, but is 1fps or worse in rviz or rqt- I'm guessing this is the fault of ros2, not o3de.

lucasw commented 5 months ago

This is done with 4d98b31e82040816fb66c6700aab08b2cf187661