Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Current »

本页介绍了rotation_action_demo的用法, 包含顺时针旋转,逆时针旋转,旋转到指定角度等功能。


本页内容


运行环境准备

  • 软件平台

    • Visual Studio 2010  SP1
    • Slamware Windows SDK:Slamware Windows SDK
    • RoboStudio(用于显示地图):Robostudio installer
    • Sample Code: 

      使用更高版本的Visual Studio可能会带来编译异常。

      使用Visual Studio 2010(无SP1)可能会因为无法与.Net Framework兼容而报编译错误,此时增加SP1更新包即可解决问题

  • 硬件平台

          (以下任选其一)

      • Slamware SDP mini 
      • Slamware SDP
      • Slamware 套装 (基于Slamware导航方案的用户机器人系统)
      • Zeus/Apollo等底盘系统


例程下载

Win32-例程下载



编译运行

  1. 打开samples工程,右键rotation_action_demo, 将此工程设置成StartUp project


  2. 右键rotation_action_demo, 打开属性选项,将Slamware SDK 的include目录和lib目录添加到工程

    Slamware SDK的include和lib目录无需复制到参考例程目录,只需在Visual Studio里指定路径即可。



  3. 右键rotation_action_demo, 在Debugging页面中command Arguments处输入 192.168.11.1 
    格式说明:rotation_action_demo <IP address>


  4. 点击F5运行
  5. 可以连上Robostudio查看地图及机器人的运动


代码描述

  • 机器人先逆时针转一周,再顺时针转一周,最后转到yaw值为pi的位置。

    旋转指定角度/旋转到指定角度
     		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();			    
    		//anticlockwise rotation
    		rpos::core::Rotation rotation(pi*2, 0, 0);
    		action = sdp.rotate(rotation);
    		action.waitUntilDone();
    		std::cout << "Action Status: " << action.getStatus() << std::endl;
    		//clockwise rotation
    	    rotation.yaw() = pi * (-2);
    		action = sdp.rotate(rotation);
    		action.waitUntilDone();
    		std::cout << "Action Status: " << action.getStatus() << std::endl;
    		//rotate to a certain orientation
    		rpos::core::Rotation orientation(pi, 0, 0);
    		action = sdp.rotateTo(orientation);
    		action.waitUntilDone();
    		std::cout << "Action Status: " << action.getStatus() << std::endl;
  • No labels