如何在ros中使用xbox one

2021-10-12 07:29:22 字數 3316 閱讀 8435

目錄[-]

在專案中需要使用遊戲手柄對裝置進行一些操作,在此選擇了微軟xbox手柄,通過在linux下呼叫裝置描述檔案來獲取遊戲手柄的輸入資料,使用步驟以及**描述如下。

• microsoft x-box one s pad 遊戲手柄在ubuntu下的驅動程式;

sudo apt-get install joystick
• 在linux系統下,向系統中插入硬體時,作業系統回味每乙個裝置分配乙個event號,在開發遊戲手柄驅動時,需要首先找到遊戲手柄對應的event以及執行緒,通過以下指令可以獲取;

cat /proc/bus/input/devices
• linux下,檢視系統中插入裝置對應的所有event以及執行緒:

ls /dev/input
• 檢視埠輸出:

cat /dev/input/js0 | hexdump
#include "fcntl.h"//unix 下通用標頭檔案,包含檔案的open,close函式

#include "stdio.h"//perror

#include "stdlib.h"

#include "linux/joystick.h"

#include "string.h"//memset

#include #include #include #include #include #include #include #include "../include/microbox.h"

//microbox_acti_type-> 1:button;2:axis

/*==button==*/

#define microbox_type_button 1

//microbox_acti_button_number-> 0:a; 1:b; 2:x; 3:y

#define microbox_number_button_a 0

#define microbox_number_button_b 1

#define microbox_number_button_x 2

#define microbox_number_button_y 3

#define microbox_number_button_lb 4

#define microbox_number_button_rb 5

#define microbox_number_button_copy 6

#define microbox_number_button_file 7

#define microbox_number_button_earth 8

#define microbox_number_button_leftjoy_pressed 9

#define microbox_number_button_rightjoy_pressed 10

//microbox_acti_button_value-> 0:沒有被按下; 1:按鈕被按下

#define microbox_value_up 0

#define microbox_value_down 1

/*==axis==*/

#define microbox_type_axis 2

//microbox_acti_axis_number-> 0:左側搖桿x軸;1:左側搖桿y軸;2:左側搖桿t軸

//3:右側搖桿x軸;4:右側搖桿y軸;5:右側搖桿t軸;6:左側+按鈕x軸;7:左側+按鈕y軸

#define microbox_number_axis_leftjoy_x 0

#define microbox_number_axis_leftjoy_y 1

#define microbox_number_axis_leftjoy_t 2

#define microbox_number_axis_rightjoy_x 3

#define microbox_number_axis_rightjoy_y 4

#define microbox_number_axis_rightjoy_t 5

#define microbox_number_axis_plusjoy_x 6

#define microbox_number_axis_plusjoy_y 7

typedef struct microbox_map

microbox_map_t;

//開啟手柄對應的檔案

int microbox_open(const char *file_name)else

}//讀取手柄對應的檔案

int microbox_read(int microbox_fd,microbox_map_t *map)

type = js.type;

number = js.number;

value = js.value;

time = js.time;

map->time = time;

if (type == microbox_type_button)

}else if (type == microbox_type_axis)

}else

printf("\rtime:%8d a:%d b:%d x:%d y:%d lb:%d rb:%d copy:%d file:%d earth:%d lp:%d rp:%d xx:%-6d xy:%-6d xz:%-6d rx:%-6d ry:%-6d rz:%-6d px:%-6d py:%-6d",

map->time, map->btn_a, map->btn_b, map->btn_x, map->btn_y, map->btn_lb, map->btn_rb, map->btn_earth, map->btn_copy, map->btn_file, map->btn_lft_joy_pressed, map->btn_rit_joy_pressed,

map->axis_lft_joy_x, map->axis_lft_joy_y, map->axis_lft_joy_t, map->axis_rit_joy_x, map->axis_rit_joy_y, map->axis_rit_joy_t, map->axis_plus_joy_x, map->axis_plus_joy_y);

}//關閉手柄對應的檔案

void microbox_close(int microbox_fd)

int main(void)

fflush(stdout);

if (microbox_value_map.btn_earth == 1)

} }

如何在ROS中使用PCL 資料格式(1)

在ros中點雲的資料型別 在ros中表示點雲的資料結構有 sensor msgs pointcloud sensor msgs pointcloud2 pcl pointcloud 關於pcl在ros的資料的結構,具體的介紹可查 看 wiki.ros.org pcl overview 關於senso...

如何在AndroidStudio中使用AIDL

本章節介紹如何在androidstudio中使用aidl 2.在aidl下建立乙個包,包裡建立乙個 aidl檔案,右鍵aidl new aidl aidl file 紅框就是建立完成後的樣子 3.在aidl檔案寫要被呼叫的方法,此方法不能有許可權修飾符 4.首先build下,然後建立乙個servic...

如何在Oracle中使用Sequence

sql server可以自增字段,但是oracle中在建表的時候可沒有這個選項,但是可以通過觸發器 trigger 或者序列 sequence 來實現,本文主要講述sequence。二者的區別oracle中自增字段的兩種方法的比較 trigger和sequence 建立sequence的語法很簡單,...