GithubHelp home page GithubHelp logo

oceanyv / gp_agv Goto Github PK

View Code? Open in Web Editor NEW
24.0 1.0 8.0 881 KB

本科毕业设计,用于AGV激光雷达导航与SLAM的ROS程序包。没啥参考价值的缝合怪。安利一下我刚刚上传的研究生毕设相关的代码,见另一个库

CMake 19.88% C++ 80.12%

gp_agv's Introduction


#用于AGV激光雷达导航与SLAM的ROS程序包
#开发环境为Ubuntu16.04 + ROS Kinetic

##使用方法

  • 下载
    建立一个含src子文件夹的文件夹
    $ mkdir 自定义路径/自定义工作空间名/src
    将src设为工作路径
    $ cd 自定义路径/自定义工作空间名/src
    拉取代码
    $ git clone [email protected]:OceanYv/gp_agv.git
  • 编译
    编译前,确认是否安装官方的serial功能包、robot_pose_ekf功能包,确认方法为在终端中输入
    $ rospack find 包名
    若未安装serial,运行
    $ sudo apt-get install ros-kinetic-serial
    若未安装robot_pose_ekf,在 https://github.com/ros-planning/navigation/tree/kinetic-devel 下载并编译;
    将路径修改为工作空间路径
    $ cd 自定义路径/自定义工作空间名
    并运行catkin_make指令以编译程序
    $ catkin_make
    运行以下指令将路径刷新到环境变量中
    $ echo "source 自定义路径/自定义工作空间名/devel/setup.bash" >> ~/.bashrc
    然后重新打开终端即可使用
  • 运行
    通过rosrun指令或roslaunch指令运行相关程序;

##package说明

  • run_agv:系统初始化,并启动各个模块
    启动整个系统的指令为
    $ roslaunch run_agv run_agv.launch
    要设置的参数
    /config/fixed_tf.yaml中的参数:激光雷达安装位置信息

  • base_controller:用于基本的运动控制、里程计数据和IMU数据获取与融合 单独运行用以下指令
    $ roslaunch base_controller base_controller.launch
    要设置的参数
    /config/base_controller.yaml中的参数:STM32串口通讯参数
    /launch/include/kenzhrobot_pose_ekf.launch.xml中的参数:有注释的三行
    文件说明
    base_controller.cpp:获取速度指令后通过串口向下位机发送速度指令,并并定时读取下位机的里程计数据;

  • lslidar_n301:镭神官方提供的ROS开发包,用于读取N301激光雷达数据
    单独运行用以下指令
    $ roslaunch lslidar_n301_decoder lslidar_n301.launch --screen
    之后运行
    $ rosrun rviz rviz
    即可在rviz中即可查看对应激光雷达数据

  • set_gmapping:调用gmapping功能包,并保存地图文件
    要设置的参数
    /launch/robot_gmapping.launch中的参数:gma pping参数、save_map参数
    该launch文件中的file_location和mapname两个param一定要按照自己的位置来配置

  • hwtimu:imu提供的包,用于通过串口连接imu并发布imu数据topic
    单独运行用以下指令
    $ roslaunch hwtimu hwtimusubexp.launch
    要设置的参数
    /cfg下yaml文件中的参数

  • joy_control、:遥控器使用和驱动,通过无线通讯控制底盘的运动,发布vel_cmd话题 单独运行用以下指令
    $ roslaunch joy_control we_joy_control.launch
    以上包在使用之前要安装joy包,还要依赖dg_common包

##其他说明 *硬件要求
在安装①网口通讯的激光雷达②RS232通讯的STM32 后方可正常运行;
若在无上诉硬件时运行run_agv.launch,会报错;
如果想要观察系统结构,请将/base_controller/src/base_controller.cpp中的71-91、133-135\182-187行注释掉,以免base_controller节点被kill;

*一些基本指令
查看tf tree
$ rosrun rqt_tf_tree rqt_tf_tree
查看系统结构 $ rqt_graph
查看参数服务器
$ rosparam list

建图方法
sudo chmod 777 /dev/ttyS4(串口号) //获取对应串口的使用权限
sudo ls -l /dev/ttyS
或者 sudo ls -l /dev/ttyUSB* //查看串口使用情况
roslaunch run_agv laser_slam_run.launch //功能:通过遥控小车运动来进行建图
设置激光雷达IP:192.168.1.125 255.255.255.0 192.168.1.1
可通过ping 192.168.1.222 或者ifconfig或者sudo tcpdump -n -i enp0s31f6来检查连接状态
roslaunch set_gmapping save_map_my.launch //保存地图数据
在运行该launch文件前,先在set_gmapping/config/save_map.yaml中修改文件名

已知地图的自主导航
sudo chmod 777 /dev/ttyS4(串口号) //获取对应串口的使用权限
* sudo ls -l /dev/ttyS
或者 sudo ls -l /dev/ttyUSB* //查看串口使用情况
roslaunch run_agv navigation_run.launch //功能:通过已经提供的地图来进行导航,在rviz中 * 修改map_file的值以改变要载入的地图
//rosrun set_gmapping acml_global_init
roslaunch set_gmapping move_base.launch //进行自主导航 * 可以在rviz中指定导航目的地

7.1代码调试 ①新增加一个参数的base_controller节点调试 1) sudo chmod 777 /dev/ttyS4 sudo chmod 777 /dev/ttyUSB0 roslaunch run_agv laser_slam_run.launch

        rosrun base_controller imu_pre_inte
        rostopic echo odom_imu
        在rviz中查看odom_imu的数据结果

        rosrun set_gmapping save_map
            在指定路径下运行,且运行之前修改名字为map0701

    2)  在非原点启动导航程序
        roslaunch run_agv navigation_run.launch
            在rviz中查看amcl_pose的定位结果

现在存在的问题:
1.数据融合的算法中存在一些明显的逻辑错误,计划在进一步巩固数学基础之后再全盘进行重新编写

gp_agv's People

Contributors

oceanyv avatar

Stargazers

 avatar Rust Su avatar  avatar  avatar Emma avatar MaFei avatar Qi Feng avatar  avatar  avatar  avatar  avatar  avatar  avatar Yuxuan Fan avatar  avatar huyunlei avatar shuike avatar  avatar SuperWhite avatar  avatar SHINE avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.