This lesson takes the MoveIT simulation as an example. If you need to set the synchronization between the real machine and the simulation, please refer to the lesson [02, MoveIt Precautions and Controlling the Real Machine]. ! ! ! be careful! ! !
The effect demonstration is a virtual machine, and other masters are running (related to the performance of the master, depending on the actual situation).
The Cartesian coordinate system is the collective name for the Cartesian coordinate system and the oblique coordinate system. A Cartesian path is actually a line connecting any two points in space
Start the MoveIT
roslaunch transbot_se_moveit_config demo.launch
Start the Cartesian path node
xxxxxxxxxx
rosrun transbot_se_moveit_config 04_cartesian # C++
rosrun transbot_se_moveit_config 04_cartesian.py # python
To view the track, you need to add the [MarkerArray] plugin and select the [/rviz_visual_tools] topic.
The python code does not have a similar trajectory to C++, and there is no special effect after running.
Set specific location
xxxxxxxxxx
rospy.loginfo("Set Init Pose")
joints = [0.49, 0.93]
transbot.set_joint_value_target(joints)
transbot.execute(transbot.plan())
Add waypoint
x # Initialize waypoint list
waypoints = []
# If True, add the initial pose to waypoint list
waypoints.append(start_pose)
wpose = deepcopy(start_pose)
wpose.position.x =0.00055
wpose.position.y =0.1139
wpose.position.z =0.049213
waypoints.append(deepcopy(wpose))
wpose.position.x =0.00055
wpose.position.y =0.11303
wpose.position.z =0.049142
waypoints.append(deepcopy(wpose))
wpose.position.x =0.00055
wpose.position.y =0.10873
wpose.position.z =0.048655
waypoints.append(deepcopy(wpose))
wpose.position.x =0.00055
wpose.position.y =0.10616
wpose.position.z =0.048255
waypoints.append(deepcopy(wpose))
wpose.position.x =0.00055
wpose.position.y =0.10446
wpose.position.z =0.047944
waypoints.append(deepcopy(wpose))
Waypoint Planning
xxxxxxxxxx
'''
waypoints:waypoints:waypoint list
eef_step: terminal step value, calculate the inverse solution every 0.1m to determine whether it is reachable
jump_threshold: jump threshold, set to 0 means jumping is not allowed
plan: path, fraction: path planning coverage
'''
(plan, fraction) = transbot.compute_cartesian_path(waypoints, 0.1, 0.0, True)
Set specific location
xxxxxxxxxx
ROS_INFO("Set Init Pose.");
//Set specific location
vector<double> pose{0.28, 2.14};
transbot.setJointValueTarget(pose);
Add waypoint
xxxxxxxxxx
//Initialize waypoint vector
std::vector<geometry_msgs::Pose> waypoints;
//Add the initial pose to the waypoint list
waypoints.push_back(start_pose);
start_pose.position.x = 0.00055;
start_pose.position.y = 0.10701;
start_pose.position.z = 0.048397;
waypoints.push_back(start_pose);
start_pose.position.x = 0.00055;
start_pose.position.y = 0.17728;
start_pose.position.z = 0.026649;
waypoints.push_back(start_pose);
start_pose.position.x = 0.00055;
start_pose.position.y = 0.19944;
start_pose.position.z = -0.009218;
waypoints.push_back(start_pose);
Waypoint planning
xxxxxxxxxx
fraction = transbot.computeCartesianPath(waypoints, eef_step, jump_threshold, trajectory);