Difference between revisions of "Lentin Joseph's chefbot Code"

From wikidb
Jump to: navigation, search
(Motor Control C++ Source)
(Motor Control C++ Source)
Line 24: Line 24:
  
 
* twist_to_motor.cpp takes nav twist and converts to motor velocities
 
* 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
 +
 +
<pre>
 +
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;
 +
}
 +
 +
</pre>

Revision as of 23:11, 22 September 2017

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;
}