moveit / moveit2

:robot: MoveIt for ROS 2
https://moveit.ai/
BSD 3-Clause "New" or "Revised" License
1.05k stars 513 forks source link

Mobile Base and an Arm tutorial – stretch ros: Integration with real controller of the mobile base #2535

Open lmendyk opened 10 months ago

lmendyk commented 10 months ago

I’m struggling in adapting the demo pointed out by mobile_base_arm_tutorial for mobile base and arm control provided by streach-ros for turtlebot3_manipulation.

The demo (the config files in stretch_moveit_config/config) assume fake controller for mobile base which defines “position” as a joint name rather than “position” to be translated to control commands to wheels of the mobile base. IN the “moveit_simple_controllers.yaml” the “position” is listed as a joint name together with joints like “joint_arm_l3” etc. which as I understand is … fake/oversimplification.

Could you advice how it should be done to integrate with the real diff_drive_controller. From moveIt documentation the moveit supports as MoveIt Controller Interfaces just: FollowJointTrajectory and GripperCommand controller Interfaces (which I currently have configured for Turtlebot3 manipulation arm) but there is nothing related to diff_drive_controller.

I even wonder if diff_drive_controller can be directly used here as it accepts Twist (via topic not action) not position (x, y) so may be the higher level controller provided by Nav2 is needed to have the postion (x,y) drive the controller.

Could anybody enlighten me and show the direction I should go.

github-actions[bot] commented 9 months ago

This issue is being labeled as stale because it has been open 45 days with no activity. It will be automatically closed after another 45 days without follow-ups.

FrGe2016 commented 7 months ago

Did you achevied any result, i also struggle to make it work with a real modified linorobot2 with an homemade arm.

henningkayser commented 7 months ago

I'm afraid that the configs from the tutorial are out of date. Especially, fake controller (or ros2_control mock component) support is not provided with the currently released versions. The best bet is to reproduce the stretch mobile manipulation demo from 2021 ROS world https://moveit.ros.org/events/rosworld-2021-workshop/.

FrGe2016 commented 7 months ago

very interesting. I am setting up the docker to look at it in details

Le mar. 20 févr. 2024, à 10 h 01, Henning Kayser @.***> a écrit :

I'm afraid that the configs from the tutorial are out of date. Especially, fake controller (or ros2_control mock component) support is not provided with the currently released versions. The best bet is to reproduce the stretch mobile manipulation demo from 2021 ROS world https://moveit.ros.org/events/rosworld-2021-workshop/.

— Reply to this email directly, view it on GitHub https://github.com/ros-planning/moveit2/issues/2535#issuecomment-1954405636, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEARAMJGHADG4YXIV52OZKDYUS3FXAVCNFSM6AAAAAA7OPC6X6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNJUGQYDKNRTGY . You are receiving this because you commented.Message ID: @.***>

github-actions[bot] commented 5 months ago

This issue is being labeled as stale because it has been open 45 days with no activity. It will be automatically closed after another 45 days without follow-ups.

lmendyk commented 5 months ago

Did you achevied any result ...

No and Yes . I mean I have given up trying using the approach presented by mobile_base_arm_tutorial. Instead I used an reverse concept. I mean I used nav2 and the behavior tree concept to invoke the action of robot arm planning by MoveIt stack once the robot has navigated to the working area for the robot arm. In other words first the robot mobile base is moved to the working area and than just robot arm performs its action. This does not provide exactly the same solution as in this "workaround" it is assumed that robot mobile base must go to the place where the object to be picked up must be in reach of the robot arm, but ... works.

FrGe2016 commented 5 months ago

i also had some result making few important changes. First of all the mobile part was a stand alone robot already accepting twist messages then i did not have to care about the diff drive controller. I replaced the the odom frame for the map frame For the planar joint in the srdf and in the stretch_ignition_control_action_server. With this setup, i can have simultaneous motions of the arm and the base. I have a remaining unsolved issue, the plan generated by moveit2 avoid obstacles in 3D, taking in account all the constraint of my complex environment, but when the plan is passed to the action server for execution, only the detailled waypoints are not passed to nav2 , only the final destinations ( not respecting the 3d restriction on the way to that destination)

floridatechnologies commented 1 month ago

Did you achevied any result ...

No and Yes . I mean I have given up trying using the approach presented by mobile_base_arm_tutorial. Instead I used an reverse concept. I mean I used nav2 and the behavior tree concept to invoke the action of robot arm planning by MoveIt stack once the robot has navigated to the working area for the robot arm. In other words first the robot mobile base is moved to the working area and than just robot arm performs its action. This does not provide exactly the same solution as in this "workaround" it is assumed that robot mobile base must go to the place where the object to be picked up must be in reach of the robot arm, but ... works.

Can you share your integration with NAV2