Lentin Joseph's chefbot Code
From wikidb
Code
Location
~/ros_packages/LentinJoseph/mastering_ros/
Motor Control Python Scripts
cd ~/ros_packages/LentinJoseph/mastering_ros/chapter_9_codes/chefbot/chefbot_bringup/scripts ls bkup_working pid_velocity.py simple_navig_goals.py chefbot_teleop_key robot_gui.py twist_to_motors.py diff_tf.py SerialDataGateway.py launchpad_node.py SerialDataGateway.pyc
- pid_velocity.py takes wheel velocity commands and does pid power
- twist_to_motors.py takes navigation twist and converst to motor velocities
Motor Control C++ Source
cd ~/ros_packages/LentinJoseph/mastering_ros/chapter_9_codes/chefbot_navig_cpp/src ls bkup diff_tf.cpp twist_to_motor.cpp
- twist_to_motor.cpp takes nav twist and converts to motor velocities
An interesting snippet.
- dx is target linear x speed
- dy is target linear y speed
- dr is target angular z speed
- w
void TwistToMotors::spinOnce() { right = ( 1.0 * dx ) + (dr * w /2); left = ( 1.0 * dx ) - (dr * w /2); std_msgs::Float32 left_; std_msgs::Float32 right_; left_.data = left; right_.data = right; pub_lmotor.publish(left_); pub_rmotor.publish(right_); ticks_since_target += 1; ros::spinOnce(); } void TwistToMotors::twistCallback(const geometry_msgs::Twist &msg) { ticks_since_target = 0; dx = msg.linear.x; dy = msg.linear.y; dr = msg.angular.z; }