turtlebot3
turtlebot3 copied to clipboard
Turtlebot 3 Profile Acceleration seems to have no affect by setting it in *.yaml config file
ISSUE TEMPLATE ver. 0.4.0
-
Which TurtleBot3 platform do you use?
- [x] Burger
- [ ] Waffle
- [ ] Waffle Pi
-
Which ROS is working with TurtleBot3?
- [ ] ROS 1 Kinetic Kame
- [ ] ROS 1 Melodic Morenia
- [ ] ROS 1 Noetic Ninjemys
- [ ] ROS 2 Dashing Diademata
- [ ] ROS 2 Eloquent Elusor
- [X] ROS 2 Foxy Fitzroy
- [ ] etc (Please specify your ROS Version here)
-
Which SBC(Single Board Computer) is working on TurtleBot3?
- [ ] Intel Joule 570x
- [ ] Raspberry Pi 3B+
- [X] Raspberry Pi 4
- [ ] etc (Please specify your SBC here)
-
Which OS you installed on SBC?
- [ ] Raspbian distributed by ROBOTIS
- [ ] Ubuntu MATE (16.04/18.04/20.04)
- [X] Ubuntu preinstalled server (18.04/20.04)
- [ ] etc (Please specify your OS here)
-
Which OS you installed on Remote PC?
- [ ] Ubuntu 16.04 LTS (Xenial Xerus)
- [ ] Ubuntu 18.04 LTS (Bionic Beaver)
- [X] Ubuntu 20.04 LTS (Focal Fossa)
- [ ] Windows 10
- [ ] MAC OS X (Specify version)
- [ ] etc (Please specify your OS here)
-
Specify the software and firmware version(Can be found from Bringup messages)
- Software version: [x.x.x]
- Firmware version: [x.x.x]
-
Specify the commands or instructions to reproduce the issue.
- Set profile_acceleration in the *.yaml config file to any value
- publish twist in ros2 to cmd_vel
-
Copy and Paste the error messages on terminal.
- HERE
-
Please describe the issue in detail.
i want the robot not so hard "start" and "stop" during movement. so I figured out that it's possible to set the dynamixels profile acceleration during turtlebot3_bringup by changing the value in the *.yaml config file (I changed it in the burger.yaml). but it seems that this has no effect. the acceleration is as fast as before.
i want to add:
if i apply the value manually with the following command, then it works without any problems:
ros2 param set /turtlebot3_node motors.profile_acceleration 50000.0
but if I add the value to the burger.yaml then it's not applied.
Hi. @Vinz1911. I'm sorry for the late reply.
May I know if you have modified the burger.yaml file in SBC? Thanks for letting me know.
Have a nice day~ thank you :)
Thank you for your reply.
Yes i modified the .yaml on the sbc. I also did add an wrong parameter to the file to check if it throws an error on the startup so i can get sure that the correct file is loaded during the startup.
After that i Removed the Parameter so that the startup get's not interruptet (just for clarification).
The file is correct but the value get's Not Applied :(
Hi @Vinz1911.
As a result of testing
I modified the profile_acceleration of the turtlebot3_bringup/param/burger.yaml
file to 50000.0.
And I was able to confirm that the parameter value has changed through the command below.
ros2 param get /turtlebot3_node motors.profile_acceleration
sorry for inconveniencing to you,
After modifying the file in the turtlebot3_bringup package, did the parameter value not change to 50000.0
? (Was the value still held at 0.0?)
Thank you.
Hi @ashekim
Yes this is very interesting. I got the same result, the value is changed but NOT applied to the OpenCR. I can also see that the value has changed but the turtlebot accelerates as fast as before. You can check this by applying a much lower value, for example: 5000.0, which should result in a much slower acceleration. But the TB3 still accelerates as fast as the dynamixel's allow it 😄
Hi @Vinz1911.
It seems necessary to check that the value is not applied when running robot.launch.
Additionally, after setting it to 1000
, testing seems to have produced the desired result.
For more information about Profile Acceleration, please see the attached link below. [1]. e-manual : profile-acceleration [2]. e-manual : what is the profile
Thank you for your patience.
Thank you. :)
Hi again @Vinz1911.
After receiving the profile_acceleration parameter from the add_motors()
, Turtlebot3 executes the run()
.
The run()
includes a parameter_event_callback()
function.
The parameter_event_callback()
writes a new profile_acceleration to DXL when the profile_acceleration parameter value changes.
Even if the parameter value was initially set to 5000.0, there was no change in the DXL speed because there was no parameter change in the parameter_event_callback
executed after that.
Therefore, unfortunately, the solution that I can give right now seems to be to change the value of the profile_acceleration parameter continuously with the param set command.
It seems that this issue needs to be discussed internally. Thank you for your understanding.
Thank you.