Excerpt |
---|
本页介绍了moveThis document introduces the demo project of "move_to_spot的用法, 包含导航模式下和轨道模式下的运动到目标点的过程。spot", including how to move in standard mode and virtual track mode. |
Content
Table of Contents | ||
---|---|---|
|
IDE Preparation
Software
本页内容
Table of Contents |
---|
运行环境准备
- 软件平台
- Visual Studio 2010 SP1
- Slamware Windows SDK:Slamware Windows SDK
- RoboStudio(用于显示地图for map display):Robostudio installer
Sample Code:
Info 使用更高版本的Visual Studio可能会带来编译异常。
使用Visual Studio 2010(无SP1)可能会因为无法与.Net Framework兼容而报编译错误,此时增加SP1更新包即可解决问题
Higher version of Visual Studio will cause errors. sometime you will need to upgrade SP1 package to make your VS compatable with .Net Framework.
Hardware
硬件平台
(以下任选其一)(Either one of following)
- Slamware SDP mini
- Slamware SDP
- Slamware 套装 (基于Slamware导航方案的用户机器人系统)
- Kit
- Zeus/ Apollo等底盘系统
- Apollo robot base
Compiling
- Right click on "move
编译运行
- 打开samples工程,右键move_to_spot, 将此工程设置成StartUp projectspot" project, set as StartUp project.
右键moveRight click on "move_to_spot, 打开属性选项,将Slamware SDK 的include目录和lib目录添加到工程
Info Slamware SDK的include和lib目录无需复制到参考例程目录,只需在Visual Studio里指定路径即可。
",then " Properties",configure "include" and "lib" directories to the corresponding folder path of Slamware SDK.
Info It's not necessary to copy files to the project directory, user will only need to configure the path of SDK.
- Right click on "move_to_spot",set "Command Arguments" as follows:
Syntax Description:move右键move_to_spot, 在Debugging页面中command Arguments处输入 192.168.11.1
格式说明: move_to_spot <IP address> - 点击F5运行
- Click " F5" to execute.
- Robot motion and map could be seen on Robostudio.可以连上Robostudio查看地图及机器人的运动
Multimedia name bandicam 2018-01-30 15-29-41-992.mp4
Code
Robot moves firstly navigate to point
代码描述
机器人导航运动到目标点(2, 0) ,期间遇到障碍物会自主避障,然后从(2,0) 沿虚拟轨道运动到目标点(0, 0)in standard mode, and then back to point (0,0) in virtual track mode, if any obstacle is detected, it will be automatically avoided during the motion.
Code Block language cpp firstline 1 title 导航到目标点 linenumbers true SlamwareCorePlatform sdp = SlamwareCorePlatform::connect(argv[1], 1445); std::cout <<"SDK Version: " << sdp.getSDKVersion() << std::endl; std::cout <<"SDP Version: " << sdp.getSDPVersion() << std::endl; rpos::actions::MoveAction action = sdp.getCurrentAction(); if (action) action.cancel(); //move to location (2, 0), not on virtual track rpos::features::motion_planner::MoveOptions options; options.flag = MoveOptionFlag(MoveOptionFlagMilestone | MoveOptionFlagPrecise); action = sdp.moveTo(rpos::core::Location(2, 0), options); action.waitUntilDone(); if (action.getStatus() == rpos::core::ActionStatusError) std::cout << "Action Failed: " << action.getReason() << std::endl; //draw a virtual track from (0, 0) to (2, 0), then move to (0, 0) via virtual track rpos::core::Line line(rpos::core::Point(0,0),rpos::core::Point(2,0)); sdp.addLine(ArtifactUsageVirtualTrack, line); options.flag = MoveOptionFlag(MoveOptionFlagKeyPoints | MoveOptionFlagPrecise); action = sdp.moveTo(rpos::core::Location(0, 0), options); action.waitUntilDone(); if (action.getStatus() == rpos::core::ActionStatusError) std::cout << "Action Failed: " << action.getReason() << std::endl;