рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рд┐рдп рд╣реЗрдмреНрд░реИрдЪрд┐рдЯреЗрд▓реА! рдкрд┐рдЫрд▓реЗ рд╢реБрдХреНрд░рд╡рд╛рд░ рдХреЛ рд╣рдорд╛рд░реА рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдореЗрдВ рдЖрд░рдУрдПрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛ рдереА - рдЖрд░рдУрдПрд╕ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛ред рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛ рдХрд╛ рдЖрдпреЛрдЬрди рдмреНрд░рдиреЛ рдХреЗ рддрдХрдиреАрдХреА рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдХреЗ рд╕реВрдЪрдирд╛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕рдВрдХрд╛рдп рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдЗрд╕ рдордВрдЪ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдкрд┐рдЫрд▓реЗ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд (рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛ рдХреЛ 4 рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдЗрд╕ рдмрд╛рд░ рдЖрд░рдУрдПрд╕ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛ рд╕реНрд╡рддрдВрддреНрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдп рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдереАред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЙрд╕ рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛ рдХреЗ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ, рдХреГрдкрдпрд╛, рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди
рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рд╕реНрдЯреЙрдк рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд┐рдд рд░реЛрдмреЛрдЯ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ред рдХрд╛рд░реНрдп рдХрд╛ рд▓рдХреНрд╖реНрдп рдЖрдЧреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рд░реЛрдмреЛрдЯ рдХреА рдЧрддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рд░реЛрдмреЛрдЯ рдЧрд╣рд░рд╛рдИ рд╕рдВрд╡реЗрджрдХ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, turtlebot_gazebo рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ ASUS Xtion), рдЖрдВрджреЛрд▓рди рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдирд┐рдХрдЯрддрдо рдмрд╛рдзрд╛ рдкрд╛рддрд╛ рд╣реИ рдФрд░ рддреАрди рдЬрд╝реЛрди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:- рд╕реБрд░рдХреНрд╖рд┐рдд - рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рджреВрд░реА рдкрд░ рд░реЛрдмреЛрдЯ, рдордВрджреА рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рддрд╛ рд╣реИ
- рдЪреЗрддрд╛рд╡рдиреА - рд░реЛрдмреЛрдЯ рдПрдХ рдмрд╛рдзрд╛ рдХреЗ рдкрд╛рд╕ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрдХреЗрдд (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдСрдбрд┐рдпреЛ рд╕рд┐рдЧреНрдирд▓) рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ рдФрд░ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
- рдЦрддрд░реЗ - рдмрд╛рдзрд╛ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИ, рд░реЛрдмреЛрдЯ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдореИрдВ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛ рдореЗрдВ, рд░реЛрд╕ рдЗрдВрдбрд┐рдЧреЛ рдХреЛ 14.04 рдкрд░ рдЯрд╛рд╕реНрдХ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП ROS рдЗрдВрдбрд┐рдЧреЛ рдХрд╛ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛редрддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИ! рдирд┐рд░реНрднрд░рддрд╛ roscpp, pcl_ros, pcl_conversions, Sens_msgs рдФрд░ geometry_msgs рдХреЗ рд╕рд╛рде рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдБ:cd ~/catkin_ws/src
catkin_create_pkg safety_control_cloud roscpp pcl_ros pcl_conversions sensor_msgs geometry_msgs
cd ~/catkin_ws
PCL рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП package.xml рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:<build_depend>libpcll-all-dev</build_depend>
...
<run_depend>libpcl-all</run_depend>
рдФрд░ CMakeLists.txt рдореЗрдВ:find_package(PCL REQUIRED)
...
include_directories(${PCL_INCLUDE_DIRS})
Src рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ safety_control.cpp рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВ:safety_control.cpp#include "ros/ros.h"
#include "pcl_conversions/pcl_conversions.h"
#include <pcl/pcl_base.h>
#include <sstream>
#include <sensor_msgs/PointCloud2.h>
#include <pcl/filters/passthrough.h>
#include <pcl/common/common.h>
#include <geometry_msgs/Twist.h>
typedef pcl::PointXYZ PointType;
typedef pcl::PointCloud<PointType> PointCloud;
typedef PointCloud::Ptr PointCloudPtr;
ros::Publisher pcd_pub_, cmd_vel_pub_;
void pcd_cb(const sensor_msgs::PointCloud2ConstPtr& pcd) {
ROS_INFO_STREAM_ONCE("Point cloud arrived");
PointCloudPtr pcd_pcl = PointCloudPtr(new PointCloud), pcd_filtered = PointCloudPtr(new PointCloud);
PointType pt_min, pt_max;
pcl::fromROSMsg(*pcd, *pcd_pcl);
pcl::PassThrough<PointType> pass;
pass.setInputCloud(pcd_pcl);
pass.setFilterFieldName("y");
pass.setFilterLimits(-0.25,0.20);
pass.filter(*pcd_filtered);
pass.setInputCloud(pcd_filtered);
pass.setFilterFieldName("x");
pass.setFilterLimits(-0.3,0.3);
pass.filter(*pcd_pcl);
pcl::getMinMax3D(*pcd_pcl, pt_min, pt_max);
geometry_msgs::Twist vel;
if (pt_min.z > 1.0) {
vel.linear.x = 0.2;
ROS_INFO_STREAM("Safe zone");
} else if (pt_min.z > 0.5) {
vel.linear.x = 0.1;
ROS_INFO_STREAM("Warning zone");
} else {
vel.linear.x = 0.0;
ROS_INFO_STREAM("Danger zone");
}
cmd_vel_pub_.publish(vel);
sensor_msgs::PointCloud2 pcd_out;
pcl::toROSMsg(*pcd_pcl, pcd_out);
pcd_pub_.publish(pcd_out);
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "safety_control_cloud");
ros::NodeHandle n;
ros::Subscriber pcd_sub = n.subscribe("/camera/depth/points", 1, pcd_cb);
pcd_pub_ = n.advertise<sensor_msgs::PointCloud2>("/output", 1);
cmd_vel_pub_ = n.advertise<geometry_msgs::Twist>("/cmd_vel_mux/input/teleop", 1);
ros::spin();
return 0;
}
CMakeLists.txt рдореЗрдВ safety_control.cpp рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВ:add_executable(safety_control_node src/safety_control.cpp)
target_link_libraries(safety_control_node ${catkin_LIBRARIES} ${PCL_LIBRARIES})
рдиреЛрдб рддрд░реНрдХ рдореЗрдВ, рд╣рдо рд╡рд┐рд╖рдп / рдХреИрдорд░рд╛ / рдЧрд╣рд░рд╛рдИ / рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рдПрдХ рдмрд┐рдВрджреБ рдмрд╛рджрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдмрд┐рдВрджреБ рдмрд╛рджрд▓ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗрдВрд╕рд░ рдХреЗ рдирд┐рдХрдЯрддрдо рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░, рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд░реЗрдЦреАрдп рдЧрддрд┐ рдХреЛ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреА рддрд░рд╣ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ / рдЯреНрд╡рд┐рд╕реНрдЯрд░ рдХреЛ рд╡рд┐рд╖рдп / cmd_vel_mux / input / teleop редрд╣рдореЗрдВ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рдореЗрдВ рдХрдИ рдЕрдХреНрд╖реЛрдВ рдореЗрдВ рдмрд┐рдВрджреБ рдмрд╛рджрд▓ рдХреЛ рдХрд╛рдЯрдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ:
pcl::PassThrough<PointType> pass;
pass.setInputCloud(pcd_pcl);
pass.setFilterFieldName("y");
pass.setFilterLimits(-0.25,0.20);
pass.filter(*pcd_filtered);
рдЧрд╣рд░рд╛рдИ рд╕рдВрд╡реЗрджрдХ рдХреА рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА (y рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде) рдХреЗ рдореВрд▓ рд╕реЗ PassThrough
рд╡рд┐рдзрд┐ рдХрд╛ 25 рд╕реЗрдореА рдиреАрдЪреЗ рдФрд░ 20 рд╕реЗрдореА рдКрдкрд░ рдмрд╛рджрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╕рд▓ рдХрд░реЗрдВ редрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ:
pass.setInputCloud(pcd_filtered);
pass.setFilterFieldName("x");
pass.setFilterLimits(-0.3,0.3);
pass.filter(*pcd_pcl);
рд╣рдо рд╕реЗрдВрд╕рд░ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА (рдЬреЗрдб рдЕрдХреНрд╖) рдХреА рдЙрддреНрдкрддреНрддрд┐ рдХреЗ рдмрд╛рдИрдВ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдмрд╛рджрд▓ 0.3 рдореАрдЯрд░ (30 рд╕реЗрдореА) рдХреА рдлрд╕рд▓ рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо z рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдмрд┐рдВрджреБ рдмрд╛рджрд▓ рдореЗрдВ рдирд┐рдХрдЯрддрдо рдмрд┐рдВрджреБ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ (рджреЗрдЦрдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗрдВрд╕рд░ рдХреЗ рдХреЗрдВрджреНрд░ рд╕реЗ рдЕрдХреНрд╖) - рдпрд╣ рдирд┐рдХрдЯрддрдо рд╡рд╕реНрддреБ рдХрд╛ рдмрд┐рдВрджреБ рд╣реЛрдЧрд╛:
pcl::getMinMax3D(*pcd_pcl, pt_min, pt_max);
рд╕реНрдкреАрдб рдХреЛ рд╡рд┐рд╖рдп / mobile_base / рдХрдорд╛рдВрдб / рд╡реЗрдЧ рдкрд░ рднреА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреИрдХреЗрдЬ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ:cd ~/catkin_ws
catkin_make
source devel/setup.bash
рдЧрдЬрд╝реЗрдмреЛ рдореЗрдВ рдХрдЫреБрдП рдмреЙрдЯ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг
рджреВрд╕рд░рд╛ рдХрд╛рд░реНрдп рдЧрдЬрд╝реЗрдмреЛ рдореЗрдВ рдЯрд░реНрдЯрд▓рдмреЛрдЯ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд░реЛрдмреЛрдЯ рдирд┐рдпрдВрддреНрд░рдг рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдерд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, apt- get рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ turtlebot_gazebo рд╕реЗрдЯ рдХрд░реЗрдВ :sudo apt-get install ros-indigo-turtlebot*
рдпрд╣рд╛рдВ рдЖрдк рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЖрд░рдУрдПрд╕ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╣рд╛рде рдореЗрдВ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реЛрдмреЛрдЯ рдирд╣реАрдВ рд╣реИред рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдЪрд▓рд╛рдПрдВ:roslaunch turtlebot_gazebo turtlebot_world.launch
рдЧрдЬрд╝реЗрдмреЛ рд╡рд┐рдВрдбреЛ рддрд╕реНрд╡реАрд░ рдХреА рддрд░рд╣ рдЦреБрд▓реЗрдЧреА:
рд╣рдо рдорд╛рдЙрд╕ рд╡реНрд╣реАрд▓ рдХреЗ рд╕рд╛рде рддрд╕реНрд╡реАрд░ рдХреЛ рдЬрд╝реВрдо рдЗрди рдФрд░ рдЖрдЙрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╛рдИрдВ рдорд╛рдЙрд╕ рдмрдЯрди рдФрд░ рдХрд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдЪрд┐рддреНрд░ рдХреЛ рдмрд╛рдПрдБ, рджрд╛рдПрдБ, рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрд▓реИрдВрдкреНрдб рдорд╛рдЙрд╕ рд╡реНрд╣реАрд▓ рдФрд░ рдХрд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╡рд░реНрдЯрд┐рдХрд▓ рд╡реНрдпреВрдЗрдВрдЧ рдПрдВрдЧрд▓ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рд░реЛрдмреЛрдЯ рдХреЛ рдЪрд╛рд▓реВ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕реАрдзреЗ рдХреИрдмрд┐рдиреЗрдЯ рдкрд░ рджрд┐рдЦреЗред рдЕрдиреБрдХрд╛рд░ рджреЗрдЦрдиреЗ рд╡рд╛рд▓реА рдЦрд┐рдбрд╝рдХреА рдХреЗ рдКрдкрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдКрдкрд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рддреАрд╕рд░реЗ рдЖрдЗрдХрди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ:
рдФрд░ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦреЗрдВрдЧреЗред
рдмреНрд▓реВ рдЖрд░реНрдХ рдХреЛ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдФрд░ рдЦреАрдВрдЪрдХрд░ рд░реЛрдмреЛрдЯ рдХреЛ рдЪрд╛рд▓реВ рдХрд░реЗрдВред рд╣рдореЗрдВ рдирд┐рдореНрди рдЪрд┐рддреНрд░
рдорд┐рд▓рддреЗ рд╣реИрдВ: rviz рдЪрд▓рд╛рдПрдБ:rosrun rviz rviz
рдкрд╣рд▓реЗ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд▓реЗрдЦ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд░реЛрдмреЙрдЯрдореЙрдбрд▓ рдбрд┐рд╕реНрдкреНрд▓реЗ рдЬреЛрдбрд╝реЗрдВ ред рдПрдХ рдкреЙрдЗрдВрдЯрдХреНрд▓рд╛рдЙрдб 2 рдбрд┐рд╕реНрдкреНрд▓реЗ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╡рд┐рд╖рдп / рдХреИрдорд░рд╛ / рдЧрд╣рд░рд╛рдИ / рдЕрдВрдХ рдЪреБрдиреЗрдВред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдирд┐рдореНрди рдЪрд┐рддреНрд░ рдорд┐рд▓рддрд╛ рд╣реИ:
рдкреЙрдЗрдВрдЯрдХреНрд▓рд╛рдЙрдб 2 рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд▓рд┐рдП, рд░рдВрдЧ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП RGB8 рдЪреБрдиреЗрдВред рд╣рдореЗрдВ рд░рдВрдЧ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдмрд╛рджрд▓ рдорд┐рд▓рддрд╛ рд╣реИ:
рд╣рдорд╛рд░реА рд╕реБрд░рдХреНрд╖рд╛_рдХрдВрдЯреНрд░реЛрд▓_рдиреЛрдб рдиреЛрдб рдЪрд▓рд╛рдПрдБ:rosrun safety_control_cloud safety_control_node
рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:[ INFO] [1479229421.537897080, 2653.960000000]: Point cloud arrived
[ INFO] [1479229421.572338588, 2654.000000000]: Warning zone
[ INFO] [1479229421.641967924, 2654.070000000]: Warning zone
рдЖрдЗрдП рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ:rostopic list
рд╣рдо рдЬрд┐рди рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ:/cmd_vel_mux/input/teleop
...
/mobile_base/commands/velocity
рд╡рд┐рд╖рдп / mobile_base / рдХрдорд╛рдВрдб / рд╡реЗрдЧ рдореЗрдВ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдПрдВ:rostopic echo /mobile_base/commands/velocity
рд░реЛрдмреЛрдЯ рдХреА рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:linear:
x: 0.1
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
рд░реЛрдмреЛрдЯ рдХреИрдмрд┐рдиреЗрдЯ рдХреА рдУрд░ рдмрдврд╝реЗрдЧрд╛ рдФрд░ рдЕрдВрдд рдореЗрдВ рдбреЗрдВрдЬрд░ рдЬреЛрди рдореЗрдВ рдХреИрдмрд┐рдиреЗрдЯ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд░реБрдХ рдЬрд╛рдПрдЧрд╛ред рдЧрдЬрд╝реЗрдмреЛ рдореЗрдВ, рд╣рдо рд░реЛрдмреЛрдЯ рдХрд╛ рдПрдХ рдкреВрд░реНрдг рд╡рд┐рд░рд╛рдо рджреЗрдЦреЗрдВрдЧреЗ:
рд╕реБрд░рдХреНрд╖рд╛_рдХрдВрдЯреНрд░реЛрд▓_рдиреЛрдб рдиреЛрдб рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ, рд╣рдо рд╕рдВрджреЗрд╢ рджреЗрдЦреЗрдВрдЧреЗ:[ INFO] [1479229426.604300460, 2658.980000000]: Danger zone
[ INFO] [1479229426.717093096, 2659.100000000]: Danger zone
рдФрд░ рд╡рд┐рд╖рдп / mobile_base / рдХрдорд╛рдВрдб / рд╡реЗрдЧ рдореЗрдВ рд╢реВрдиреНрдп рдЧрддрд┐ рд╡рд╛рд▓рд╛ рд╕рдВрджреЗрд╢ рдЕрдм рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
Rviz / рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рд╖рдп рдХреЗ рд╕рд╛рде PointCloud2 рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред Color Transformer рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд▓рд┐рдП, FlatColor рдФрд░ рд╣рд░реЗ рд░рдВрдЧ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛_рдХрдВрдЯреНрд░реЛрд▓_рдиреЛрдб рдиреЛрдб рд╕реЗ рдмрд┐рдВрджреБ рдХреНрд▓рд╛рдЙрдб рдХрд╛ рд╣рдорд╛рд░рд╛ рдЦрдВрдб рд╣реЛрдЧрд╛: рдЪрд▓реЛ
рдмрд╛рдзрд╛ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рджреВрд░реА рдХреЗ рд▓рд┐рдП рд░реЛрдмреЛрдЯ рдХреЛ рдФрд░ рднреА рдЖрдЧреЗ рдмрдврд╝рд╛рдПрдВ ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢реАрд░реНрд╖ рдкрд░ рджреВрд╕рд░рд╛ рдЖрдЗрдХрди рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:рдФрд░ рдХрд░реНрд╕рд░ рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪрдХрд░ рд░реЛрдмреЛрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ:
rviz рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦреЗрдВрдЧреЗ:
рд╣рдо рдЕрдкрдиреЗ рдиреЛрдб рд╕реЗ рдРрд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ:[ INFO] [1479230429.902116395, 3658.000000000]: Safe zone
[ INFO] [1479230429.992468971, 3658.090000000]: Safe zone
рд░реЛрдмреЛрдЯ рдХреА рдЧрддрд┐ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА:---
linear:
x: 0.2
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛: рдЪреЗрддрд╛рд╡рдиреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдордВрджреА рдФрд░ рдХреИрдмрд┐рдиреЗрдЯ рдХреЗ рдкрд╛рд╕ рд░реБрдХреЗрдВредрдЕрдм рд╣рдорд╛рд░рд╛ рдЯрд░реНрдЯрд▓рдмреЛрдЯ рдХрд┐рд╕реА рднреА рдмрд╛рдзрд╛ рдХреЗ рд╕рд╛рдордиреЗ рд░реБрдХрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдЬреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗрдВрд╕рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЖрд░рдУрдПрд╕ рдЗрдВрдбрд┐рдЧреЛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдПрд╕рдпреВрдПрд╕ рдПрдХреНрд╕рд┐рдпрди)ред рдЖрдк Microsoft Kinect рдЬреИрд╕реЗ рд╕реЗрдВрд╕рд░ рд╕реЗ рд▓реИрд╕ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реЛрдмреЛрдЯ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрд╡рд╣ рд╕рдм рд╣реИред рд╣рдордиреЗ рдПрдХ рдЧрд╣рди рд╕реЗрдВрд╕рд░ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реЛрдмреЛрдЯ рдХреА рдЧрддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛ - рдПрдХ рдмрд┐рдВрджреБ рдмрд╛рджрд▓ - рдФрд░ рдЧрдЬрд╝реЗрдмреЛ рдореЗрдВ рдЯрд░реНрдЯрд▓рдмреЛрдЯ рд░реЛрдмреЛрдЯ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛редрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЧреБрдб рд▓рдХ рдФрд░ рдЬрд▓реНрдж рд╣реА рдорд┐рд▓рддреЗ рд╣реИрдВ!