📋
micro-ROSでerror: no match for 'operator[]'と言われた
はじめに
- teensy with micro-ROSをやっていて、joystickの/joyをteensy側でsubscribeしてラジコンみたいなのを作りたかった。
- 超絶初心者なので何も考えずにROSの方法で記述しているとエラーを吐いた。
- error: no match for 'operator[]' (operand types are 'const rosidl_runtime_c__int32__Sequence' and 'int')
問題・解決
- messageのところでエラーになっている
- いろいろ検索
- ヒント1
- ヒント2
- 普通にmicroROSのAdvanced Tutorialに書いてありました。
例
void motor_callback(const void * msgin)
{
const sensor_msgs__msg__Joy * msg = (const sensor_msgs__msg__Joy *)msgin;
// 正しい方法
if((msg->buttons.data[1])== 1){
motor_flag = 0;
}
if((msg->buttons.data[2])== 1){
motor_flag = 1;
}
pwmcmd = 2000*( msg->axes.data[1]) + 1010;
// エラーでる方法
// if((msg->buttons[1])== 1){
// motor_flag = 0;
// }
// if((msg->buttons[2])== 1){
// motor_flag = 1;
// }
// pwmcmd = 2000*( msg->axes[1]) + 1010;
}
Discussion