ROS(indigo)RRT路径规划
发布时间:2020-07-16 10:05:59 所属栏目:Ubuntu 来源:互联网
导读:源码地址:https://github.com/nalin1096/path_planning 路径规划 使用ROS实现了基于RRT路径规划算法。 发行版 - indigo 算法在有一个障碍的环境找到优化的路径。算法可视化在RVIZ完成,代码是用C ++编写。 包有两个可执行文件: 1ros_node 2env_node RVIZ参
源码地址:https://github.com/nalin1096/path_planning 路径规划使用ROS实现了基于RRT路径规划算法。 发行版 - indigo 算法在有一个障碍的环境找到优化的路径。算法可视化在RVIZ完成,代码是用C ++编写。 包有两个可执行文件: 1ros_node2env_node RVIZ参数: 1Frame_id =“path_planner” 说明:
如果想修改环境environment,如下: #include <ros/ros.h> #include <visualization_msgs/Marker.h> #include <path_planning/rrt.h> #include <path_planning/obstacles.h> #include <geometry_msgs/Point.h> #include <iostream> #include <cmath> #include <math.h> #include <stdlib.h> #include <unistd.h> #include <vector> using namespace rrt; void initializeMarkers(visualization_msgs::Marker &boundary,visualization_msgs::Marker &obstacle) { //init headers boundary.header.frame_id = obstacle.header.frame_id = "path_planner"; boundary.header.stamp = obstacle.header.stamp = ros::Time::now(); boundary.ns = obstacle.ns = "path_planner"; boundary.action = obstacle.action = visualization_msgs::Marker::ADD; boundary.pose.orientation.w = obstacle.pose.orientation.w = 1.0; //setting id for each marker boundary.id = 110; obstacle.id = 111; //defining types boundary.type = visualization_msgs::Marker::LINE_STRIP; obstacle.type = visualization_msgs::Marker::LINE_LIST; //setting scale boundary.scale.x = 1; obstacle.scale.x = 0.2; //assigning colors boundary.color.r = obstacle.color.r = 0.0f; boundary.color.g = obstacle.color.g = 0.0f; boundary.color.b = obstacle.color.b = 0.0f; boundary.color.a = obstacle.color.a = 1.0f; } vector<geometry_msgs::Point> initializeBoundary() { vector<geometry_msgs::Point> bondArray; geometry_msgs::Point point; //first point point.x = 0; point.y = 0; point.z = 0; bondArray.push_back(point); //second point point.x = 0; point.y = 100; point.z = 0; bondArray.push_back(point); //third point point.x = 100; point.y = 100; point.z = 0; bondArray.push_back(point); //fourth point point.x = 100; point.y = 0; point.z = 0; bondArray.push_back(point); //first point again to complete the box point.x = 0; point.y = 0; point.z = 0; bondArray.push_back(point); return bondArray; } vector<geometry_msgs::Point> initializeObstacles() { vector< vector<geometry_msgs::Point> > obstArray; vector<geometry_msgs::Point> obstaclesMarker; obstacles obst; obstArray = obst.getObstacleArray(); for(int i=0; i<obstArray.size(); i++) { for(int j=1; j<5; j++) { obstaclesMarker.push_back(obstArray[i][j-1]); obstaclesMarker.push_back(obstArray[i][j]); } } return obstaclesMarker; } int main(int argc,char** argv) { //initializing ROS ros::init(argc,argv,"env_node"); ros::NodeHandle n; //defining Publisher ros::Publisher env_publisher = n.advertise<visualization_msgs::Marker>("path_planner_rrt",1); //defining markers visualization_msgs::Marker boundary; visualization_msgs::Marker obstacle; initializeMarkers(boundary,obstacle); //initializing rrtTree RRT myRRT(2.0,2.0); int goalX,goalY; goalX = goalY = 95; boundary.points = initializeBoundary(); obstacle.points = initializeObstacles(); env_publisher.publish(boundary); env_publisher.publish(obstacle); while(ros::ok()) { env_publisher.publish(boundary); env_publisher.publish(obstacle); ros::spinOnce(); ros::Duration(1).sleep(); } return 1; } 障碍物obstacles,可修改调整障碍物个数等: (编辑:鄂州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Ubuntu下Java、Nginx和Tomcat的安装部署
- 在 Ubuntu 14.04 上编译 llvm 和 clang 3.8
- Ubuntu Apache配置以及cgi配置方法
- Ubuntu安装Google Chrome,报NSS version的错误
- 在虚拟机virtualbox中安装ubuntu的图文教程
- ubuntu 16.04+cuda8.0的安装
- Ubuntu配置Vim及不同语法显示不同颜色操作步骤
- 详解Ubuntu 从零开始搭建Python开发环境
- Ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解
- ubuntu输入密码登陆后又跳到登陆界面解决方案